package tools;

import systems.exceptions.equipments.ItemIsNullException;
import equipments.*;

/**
 * This interface will be use to declare every visit method
 * @author Benjamin Orman & Baptiste Legrand
 * */
public interface Visitor {

    /**
     * This method allow to visit Items
     * @param item is the Items
     **/
    void visit(Items item);
    /**
     * This method allow to visit Weapon
     * @param weapon is the Weapon
     **/
    void visit(Weapon weapon);
    /**
     * This method allow to visit Armor
     * @param armor is the Armor
     **/
    void visit(Armor armor);
    /**
     * This method allow to visit Manastone
     * @param mana is the Manastone
     **/
    void visit(Manastone mana);
    /**
     * This method allow to visit Accessory
     * @param accessory is the Accessory
     **/
    void visit(Accessory accessory);

    //TODO : Comment this
    void bonusvisit(Items item);
    //TODO : Comment this

    void bonusvisit(Weapon weapon);
    //TODO : Comment this

    void bonusvisit(Armor armor);
    //TODO : Comment this
    void bonusvisit(Manastone mana);
    //TODO : Comment this
    void bonusvisit(Accessory accessory);
}